package com.cjm.algorithm.babo;

import com.cjm.algorithm.GeneratorUtils;

public class Babo {
    /**
     * 冒泡排序:一次比较两个元素, 如果它们的顺序错误就把它们交换过来, 走访数列的工作是重复地进行直到没有再交换
     *
     * 1, 比较两个相邻的元素,如果第一个比第二个大, 就交换它们两个;
     * 2, 对每一对相邻元素作同样的工作, 从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
     * 3, 针对所有的元素重复以上的步骤, 除了最后一个;
     * 4, 重复步骤1~3, 直到排序完成.
     *
     */
    public static void babo() {
        System.out.println("冒泡排序\r\n");
        int[] arr = GeneratorUtils.generator();
        sort(arr);
        GeneratorUtils.print(arr);
    }



    public static void sort(int[] arr) {
        long l = System.currentTimeMillis();
        int length = arr.length;
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length - 1 -i;j++) {
                if (arr[j] > arr[j + 1]) {
                    GeneratorUtils.swap(arr, j, j + 1);
                }
            }
        }
        long l1 = System.currentTimeMillis();
        System.err.println("花了" + (l1 - l) + "ms");
    }

    public static void xx(int[] arr) {
        int len = arr.length;
        for (int i = 0; i < len; i++) {
            // 每走一次, 就会将最大的值, 给放到这个数组的最后面
            // 每次j都从0开始, 再从前的这些值中, 找到最大的值
            for (int j = 0;i<len - 1-i;j++) {
                if (arr[j] > arr[j + 1]) {
                    // 如果索引小处的值, 大于后面的值 , 那么 交换它们的位置 , 将大的值给放入到后面去
                    // 交换
                }
            }
        }
    }
}
